$(function () {

    'use strict'

    /* ChartJS
     * -------
     * Here we will create a few charts using ChartJS
     */

    //-----------------------
    //- MONTHLY SALES CHART -
    //-----------------------

    // Get context with jQuery - using jQuery's .get() method.
    var salesChartCanvas = $('#salesChart').get(0).getContext('2d')
    // This will get the first returned node in the jQuery collection.
    var salesChart = new Chart(salesChartCanvas)

    var salesChartData = {
        labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
        datasets: [
            {
                label: 'Electronics',
                fillColor: '#dee2e6',
                strokeColor: '#ced4da',
                pointColor: '#ced4da',
                pointStrokeColor: '#c1c7d1',
                pointHighlightFill: '#fff',
                pointHighlightStroke: 'rgb(220,220,220)',
                data: [65, 59, 80, 81, 56, 55, 40]
            },
            {
                label: 'Digital Goods',
                fillColor: 'rgba(0, 123, 255, 0.9)',
                strokeColor: 'rgba(0, 123, 255, 1)',
                pointColor: '#3b8bba',
                pointStrokeColor: 'rgba(0, 123, 255, 1)',
                pointHighlightFill: '#fff',
                pointHighlightStroke: 'rgba(0, 123, 255, 1)',
                data: [28, 48, 40, 19, 86, 27, 90]
            }
        ]
    }

    var salesChartOptions = {
        //Boolean - If we should show the scale at all
        showScale: true,
        //Boolean - Whether grid lines are shown across the chart
        scaleShowGridLines: false,
        //String - Colour of the grid lines
        scaleGridLineColor: 'rgba(0,0,0,.05)',
        //Number - Width of the grid lines
        scaleGridLineWidth: 1,
        //Boolean - Whether to show horizontal lines (except X axis)
        scaleShowHorizontalLines: true,
        //Boolean - Whether to show vertical lines (except Y axis)
        scaleShowVerticalLines: true,
        //Boolean - Whether the line is curved between points
        bezierCurve: true,
        //Number - Tension of the bezier curve between points
        bezierCurveTension: 0.3,
        //Boolean - Whether to show a dot for each point
        pointDot: false,
        //Number - Radius of each point dot in pixels
        pointDotRadius: 4,
        //Number - Pixel width of point dot stroke
        pointDotStrokeWidth: 1,
        //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
        pointHitDetectionRadius: 20,
        //Boolean - Whether to show a stroke for datasets
        datasetStroke: true,
        //Number - Pixel width of dataset stroke
        datasetStrokeWidth: 2,
        //Boolean - Whether to fill the dataset with a color
        datasetFill: true,
        //String - A legend template
        legendTemplate: '<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<datasets.length; i++){%><li><span style="background-color:<%=datasets[i].lineColor%>"></span><%=datasets[i].label%></li><%}%></ul>',
        //Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
        maintainAspectRatio: false,
        //Boolean - whether to make the chart responsive to window resizing
        responsive: true
    }

    //Create the line chart
    salesChart.Line(salesChartData, salesChartOptions)

    //---------------------------
    //- END MONTHLY SALES CHART -
    //---------------------------

    //-------------
    //- PIE CHART -
    //-------------
    // Get context with jQuery - using jQuery's .get() method.
    var pieChartCanvas = $('#pieChart').get(0).getContext('2d')
    var pieChart = new Chart(pieChartCanvas)
    var PieData = [
        {
            value: 700,
            color: '#dc3545',
            highlight: '#dc3545',
            label: 'Chrome'
        },
        {
            value: 500,
            color: '#28a745',
            highlight: '#28a745',
            label: 'IE'
        },
        {
            value: 400,
            color: '#ffc107',
            highlight: '#ffc107',
            label: 'FireFox'
        },
        {
            value: 600,
            color: '#17a2b8',
            highlight: '#17a2b8',
            label: 'Safari'
        },
        {
            value: 300,
            color: '#007bff',
            highlight: '#007bff',
            label: 'Opera'
        },
        {
            value: 100,
            color: '#6c757d',
            highlight: '#6c757d',
            label: 'Navigator'
        }
    ]
    var pieOptions = {
        //Boolean - Whether we should show a stroke on each segment
        segmentShowStroke: true,
        //String - The colour of each segment stroke
        segmentStrokeColor: '#fff',
        //Number - The width of each segment stroke
        segmentStrokeWidth: 1,
        //Number - The percentage of the chart that we cut out of the middle
        percentageInnerCutout: 50, // This is 0 for Pie charts
        //Number - Amount of animation steps
        animationSteps: 100,
        //String - Animation easing effect
        animationEasing: 'easeOutBounce',
        //Boolean - Whether we animate the rotation of the Doughnut
        animateRotate: true,
        //Boolean - Whether we animate scaling the Doughnut from the centre
        animateScale: false,
        //Boolean - whether to make the chart responsive to window resizing
        responsive: true,
        // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
        maintainAspectRatio: false,
        //String - A legend template
        legendTemplate: '<ul class="<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>',
        //String - A tooltip template
        tooltipTemplate: '<%=value %> <%=label%> users'
    }
    //Create pie or douhnut chart
    // You can switch between pie and douhnut using the method below.
    pieChart.Doughnut(PieData, pieOptions)
    //-----------------
    //- END PIE CHART -
    //-----------------

    /* jVector Maps
     * ------------
     * Create a world map with markers
     */
    $('#world-map-markers').vectorMap({
        map: 'world_mill_en',
        normalizeFunction: 'polynomial',
        hoverOpacity: 0.7,
        hoverColor: false,
        backgroundColor: 'transparent',
        regionStyle: {
            initial: {
                fill: 'rgba(210, 214, 222, 1)',
                'fill-opacity': 1,
                stroke: 'none',
                'stroke-width': 0,
                'stroke-opacity': 1
            },
            hover: {
                'fill-opacity': 0.7,
                cursor: 'pointer'
            },
            selected: {
                fill: 'yellow'
            },
            selectedHover: {}
        },
        markerStyle: {
            initial: {
                fill: '#00a65a',
                stroke: '#111'
            }
        },
        markers: [
            {
                latLng: [41.90, 12.45],
                name: 'Vatican City'
            },
            {
                latLng: [43.73, 7.41],
                name: 'Monaco'
            },
            {
                latLng: [-0.52, 166.93],
                name: 'Nauru'
            },
            {
                latLng: [-8.51, 179.21],
                name: 'Tuvalu'
            },
            {
                latLng: [43.93, 12.46],
                name: 'San Marino'
            },
            {
                latLng: [47.14, 9.52],
                name: 'Liechtenstein'
            },
            {
                latLng: [7.11, 171.06],
                name: 'Marshall Islands'
            },
            {
                latLng: [17.3, -62.73],
                name: 'Saint Kitts and Nevis'
            },
            {
                latLng: [3.2, 73.22],
                name: 'Maldives'
            },
            {
                latLng: [35.88, 14.5],
                name: 'Malta'
            },
            {
                latLng: [12.05, -61.75],
                name: 'Grenada'
            },
            {
                latLng: [13.16, -61.23],
                name: 'Saint Vincent and the Grenadines'
            },
            {
                latLng: [13.16, -59.55],
                name: 'Barbados'
            },
            {
                latLng: [17.11, -61.85],
                name: 'Antigua and Barbuda'
            },
            {
                latLng: [-4.61, 55.45],
                name: 'Seychelles'
            },
            {
                latLng: [7.35, 134.46],
                name: 'Palau'
            },
            {
                latLng: [42.5, 1.51],
                name: 'Andorra'
            },
            {
                latLng: [14.01, -60.98],
                name: 'Saint Lucia'
            },
            {
                latLng: [6.91, 158.18],
                name: 'Federated States of Micronesia'
            },
            {
                latLng: [1.3, 103.8],
                name: 'Singapore'
            },
            {
                latLng: [1.46, 173.03],
                name: 'Kiribati'
            },
            {
                latLng: [-21.13, -175.2],
                name: 'Tonga'
            },
            {
                latLng: [15.3, -61.38],
                name: 'Dominica'
            },
            {
                latLng: [-20.2, 57.5],
                name: 'Mauritius'
            },
            {
                latLng: [26.02, 50.55],
                name: 'Bahrain'
            },
            {
                latLng: [0.33, 6.73],
                name: 'São Tomé and Príncipe'
            }
        ]
    })

    /* SPARKLINE CHARTS
     * ----------------
     * Create a inline charts with spark line
     */

    //-----------------
    //- SPARKLINE BAR -
    //-----------------
    $('.sparkbar').each(function () {
        var $this = $(this)
        $this.sparkline('html', {
            type: 'bar',
            height: $this.data('height') ? $this.data('height') : '30',
            barColor: $this.data('color')
        })
    })

    //-----------------
    //- SPARKLINE PIE -
    //-----------------
    $('.sparkpie').each(function () {
        var $this = $(this)
        $this.sparkline('html', {
            type: 'pie',
            height: $this.data('height') ? $this.data('height') : '90',
            sliceColors: $this.data('color')
        })
    })

    //------------------
    //- SPARKLINE LINE -
    //------------------
    $('.sparkline').each(function () {
        var $this = $(this)
        $this.sparkline('html', {
            type: 'line',
            height: $this.data('height') ? $this.data('height') : '90',
            width: '100%',
            lineColor: $this.data('linecolor'),
            fillColor: $this.data('fillcolor'),
            spotColor: $this.data('spotcolor')
        })
    })
})
